﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using QldtSdh.DAL.Models;

namespace QldtSdh.BLL
{
    public class BizKhoiKienThuc
    {
        //public const string KhoiKienThuc_A_Chung = "Khối kiến thức chung";
        //public const string KhoiKienThuc_B_CoSo = "Khối kiến thức cơ sở";
        //public const string KhoiKienThuc_C_ChuyenNganh = "Khối kiến thức chuyên ngành";
        //public const string KhoiKienThuc_D_KhoaLuanTotNghiep = "Khoá luận tốt nghiệp";

        public static readonly List<string> List = new List<string>()
            { 
               KHOIKIENTHUC_STRING.KIENTHUC_CHUNG,
               KHOIKIENTHUC_STRING.KIENTHUC_COSO,
               KHOIKIENTHUC_STRING.KIENTHUC_CHUYENNGANH,
               KHOIKIENTHUC_STRING.KIENTHUC_KHOALUANTOTNGHIEP
                //KhoiKienThuc_A_Chung, 
                //KhoiKienThuc_B_CoSo, 
                //KhoiKienThuc_C_ChuyenNganh 
                //KhoiKienThuc_D_KhoaLuanTotNghiep
            };

        /// <summary>
        /// Trả về tên khối kiến thức từ ký hiệu A, B, C, D
        /// </summary>
        /// <param name="kyHieu"></param>
        /// <returns></returns>
        public static string GetByAbbr(string kyHieu)
        {
            kyHieu = kyHieu.Trim().ToUpper();
            if (kyHieu == "A")
                return KHOIKIENTHUC_STRING.KIENTHUC_CHUNG;
            if (kyHieu == "B")
                return KHOIKIENTHUC_STRING.KIENTHUC_COSO;
            if (kyHieu == "C")
                return KHOIKIENTHUC_STRING.KIENTHUC_CHUYENNGANH;
            if (kyHieu == "D")
                return KHOIKIENTHUC_STRING.KIENTHUC_KHOALUANTOTNGHIEP;
            return "";
        }

        public static string ConvertToString(int KhoiKienThuc)
        {
            if (KhoiKienThuc == (int)KHOIKIENTHUC.KIENTHUCCHUNG)
                return KHOIKIENTHUC_STRING.KIENTHUC_CHUNG;
            if (KhoiKienThuc == (int)KHOIKIENTHUC.KIENTHUCCOSO)
                return KHOIKIENTHUC_STRING.KIENTHUC_COSO;
            if (KhoiKienThuc == (int)KHOIKIENTHUC.KIENTHUCCHUYENNGANH)
                return KHOIKIENTHUC_STRING.KIENTHUC_CHUYENNGANH;
            if (KhoiKienThuc == (int)KHOIKIENTHUC.KHOALUANTOTNGHIEP)
                return KHOIKIENTHUC_STRING.KIENTHUC_KHOALUANTOTNGHIEP;
            return "";
        }

        public static int ConvertToInt(string st)
        {
            if (st == KHOIKIENTHUC_STRING.KIENTHUC_CHUNG)
                return (int)KHOIKIENTHUC.KIENTHUCCHUNG;
            else if (st == KHOIKIENTHUC_STRING.KIENTHUC_COSO)
                return (int)KHOIKIENTHUC.KIENTHUCCOSO;
            else if (st == KHOIKIENTHUC_STRING.KIENTHUC_CHUYENNGANH)
                return (int)KHOIKIENTHUC.KIENTHUCCHUYENNGANH;
            else if (st == KHOIKIENTHUC_STRING.KIENTHUC_KHOALUANTOTNGHIEP)
                return (int)KHOIKIENTHUC.KHOALUANTOTNGHIEP;
            else
                throw new Exception("Không xác định được khối kiến thức học phần");
        }
    }

    public partial class BizChuongTrinhDaoTao_HocPhan
    {
        /// <summary>
        /// Lấy danh sách các học phần trong chương trình đào tạo (có bao gồm thông tin chi tiết của học phần)
        /// </summary>
        /// <param name="maChuongTrinhDaoTaoGUID"></param>
        /// <returns></returns>
        public static List<ChuongTrinhDaoTao_HocPhan> GetListWithHocPhanDetails(string maChuongTrinhDaoTaoGUID)
        {
            using (var db = CEMS4UG_DHKHContext.GetContext())
            {
                var lstHocPhan = db.ChuongTrinhDaoTao_HocPhanDbSet.Include("HocPhan")
                    .Where(e => e.MaChuongTrinhDaoTaoGUID == maChuongTrinhDaoTaoGUID)
                    .OrderBy(e => e.HocKy)
                    .ThenBy(e => e.KhoiKienThuc)
                    .ThenBy(e => e.HocPhan.MaHocPhan)
                    .ToList();
                return lstHocPhan;
            }
        }
    }
}